﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

using Controller; // Brug vores class library "Controller"
using Interfaces; // Brug vores class library "Interfaces"

namespace Sorts_F1
{
    public partial class FrmOpretKoerere : Form
    {
        // Attribut
        ClsSystemController systemController;

        public FrmOpretKoerere(ClsSystemController systemController) // Modtager controlleren fra start formen
        {
            InitializeComponent();
            this.systemController = systemController; // Istedet for at instansiere en ny controller bruger vi den der bliver sendt med
            this.MinimumSize = this.MaximumSize = this.Size; // Sørg for at formen altid er den nuværende størrelse
        }

        private void FrmKoerere_Load(object sender, EventArgs e)
        {
            // Indlæs teams
            foreach (var item in systemController.VisTeams())
            {
                cbTeams.Items.Add(item.TeamNavn);
            }

            cbTeams.SelectedIndex = 0; // vælg det første element i comboboxen

            OpdaterFormen(); // Opret listview og indlæs kørere ved form load
        }

        private void btnOpretKører_Click(object sender, EventArgs e)
        {
            try
            {
                string koereNavn = txtOpretNavn.Text;
                int koereNummer = int.Parse(txtOpretKoerersNummer.Text);
                IClsTeams tempTeam = null;

                // Find det objekt der passer til det valgte teamnavn i combobxen
                foreach (var item in systemController.VisTeams())
                {
                    if (item.TeamNavn == cbTeams.SelectedItem.ToString())
                    {
                        tempTeam = item;
                    }
                }

                lvKoerere.Items.Clear(); // Clear for at gøre klar til ny opdateret data

                systemController.UploadKoereTilDB(koereNavn, koereNummer, tempTeam);
                systemController.OpdaterKoerereFraDB(); // Download det nye data
                OpdaterFormen(); // Indlæs det nye data

            }

            catch
            {
                OpdaterFormen();
                MessageBox.Show("Kørenummeret eksistere allerede i databasen.");
            }

            finally
            {
                txtOpretNavn.Clear();
                txtOpretKoerersNummer.Clear();
            }
        }

        public void OpdaterFormen()
        {
            foreach (var item in systemController.VisKoerere())
            {
                ListViewItem lvi = new ListViewItem(); // Instansier listview
                lvi.SubItems[0].Text = item.KoereNummer.ToString();
                lvi.SubItems.Add(item.Navn);
                lvi.SubItems.Add(item.KoereTeam.TeamNavn);
                lvi.Tag = item.KoereNummer;
                lvKoerere.Items.Add(lvi); // Addere subitems til listviewet
            }
        }

        private void btnTilbage_Click(object sender, EventArgs e)
        {
            this.Close(); // Lukker formen
        }

    }
}